var Login = function()
{

	var handleLogin = function()
	{

		$('.login-form').validate(
		{
			errorElement : 'span', // default input error message container
			errorClass : 'help-block', // default input error message class
			focusInvalid : false, // do not focus the last invalid input
			rules :
			{
				'manager.managerName' :
				{
					required : true
				},
				'manager.managerPassword' :
				{
					required : true
				},
				remember :
				{
					required : false
				}
			},

			messages :
			{
				'manager.managerName' :
				{
					required : "用户名是必需的."
				},
				'manager.managerPassword' :
				{
					required : "密码是必需的."
				}
			},

			invalidHandler : function(event, validator)
			{ // display error alert on form submit
				$('.alert-danger', $('.login-form')).show();
			},

			highlight : function(element)
			{ // hightlight error inputs
				$(element).closest('.form-group').addClass('has-error'); // set error class to the control group
			},

			success : function(label)
			{
				label.closest('.form-group').removeClass('has-error');
				label.remove();
			},

			errorPlacement : function(error, element)
			{
				error.insertAfter(element.closest('.input-icon'));
			},

			submitHandler : function(form)
			{
				// alert($(".login-form").serialize());
				// form.submit(); // form validation success, call ajax form submit
				$.post("m_login_do", $(".login-form").serialize(), function(json)
				{
					if (json.success == true)
					{
						window.location.href = "shop/show_shop";
					}
					else
					{
						alert("操作失败：" + json.info);
					}
				}, "json");
			}
		});

		$('.login-form input').keypress(function(e)
		{
			if (e.which == 13)
			{
				if ($('.login-form').validate().form())
				{
					$('.login-form').submit(); // form validation success, call ajax form submit
				}
				return false;
			}
		});
	}

	var handleForgetPassword = function()
	{
		$('.forget-form').validate(
		{
			errorElement : 'span', // default input error message container
			errorClass : 'help-block', // default input error message class
			focusInvalid : false, // do not focus the last invalid input
			ignore : "",
			rules :
			{
				email :
				{
					required : true,
					email : true
				}
			},

			messages :
			{
				email :
				{
					required : "邮箱地址是必需的."
				}
			},

			invalidHandler : function(event, validator)
			{ // display error alert on form submit

			},

			highlight : function(element)
			{ // hightlight error inputs
				$(element).closest('.form-group').addClass('has-error'); // set error class to the control group
			},

			success : function(label)
			{
				label.closest('.form-group').removeClass('has-error');
				label.remove();
			},

			errorPlacement : function(error, element)
			{
				error.insertAfter(element.closest('.input-icon'));
			},

			submitHandler : function(form)
			{
				form.submit();
			}
		});

		$('.forget-form input').keypress(function(e)
		{
			if (e.which == 13)
			{
				if ($('.forget-form').validate().form())
				{
					$('.forget-form').submit();
				}
				return false;
			}
		});

		jQuery('#forget-password').click(function()
		{
			jQuery('.login-form').hide();
			jQuery('.forget-form').show();
		});

		jQuery('#back-btn').click(function()
		{
			jQuery('.login-form').show();
			jQuery('.forget-form').hide();
		});

	}

	var handleRegister = function()
	{

		function format(state)
		{
			if (!state.id)
				return state.text; // optgroup
			return "<img class='flag' src='assets/img/flags/" + state.id.toLowerCase() + ".png'/>&nbsp;&nbsp;" + state.text;
		}

		$("#select2_sample4").select2(
		{
			placeholder : '<i class="fa fa-map-marker"></i>&nbsp;Select a Country',
			allowClear : true,
			formatResult : format,
			formatSelection : format,
			escapeMarkup : function(m)
			{
				return m;
			}
		});

		$('#select2_sample4').change(function()
		{
			$('.register-form').validate().element($(this)); // revalidate the chosen dropdown value and show error or success message for the input
		});

		$('.register-form').validate(
		{
			errorElement : 'span', // default input error message container
			errorClass : 'help-block', // default input error message class
			focusInvalid : false, // do not focus the last invalid input
			ignore : "",
			rules :
			{

				fullname :
				{
					required : true
				},
				email :
				{
					required : true,
					email : true
				},
				address :
				{
					required : true
				},
				city :
				{
					required : true
				},
				country :
				{
					required : true
				},

				username :
				{
					required : true
				},
				password :
				{
					required : true
				},
				rpassword :
				{
					equalTo : "#register_password"
				},

				tnc :
				{
					required : true
				}
			},

			messages :
			{ // custom messages for radio buttons and checkboxes
				tnc :
				{
					required : "Please accept TNC first."
				}
			},

			invalidHandler : function(event, validator)
			{ // display error alert on form submit

			},

			highlight : function(element)
			{ // hightlight error inputs
				$(element).closest('.form-group').addClass('has-error'); // set error class to the control group
			},

			success : function(label)
			{
				label.closest('.form-group').removeClass('has-error');
				label.remove();
			},

			errorPlacement : function(error, element)
			{
				if (element.attr("name") == "tnc")
				{ // insert checkbox errors after the container
					error.insertAfter($('#register_tnc_error'));
				}
				else if (element.closest('.input-icon').size() === 1)
				{
					error.insertAfter(element.closest('.input-icon'));
				}
				else
				{
					error.insertAfter(element);
				}
			},

			submitHandler : function(form)
			{
				form.submit();
			}
		});

		$('.register-form input').keypress(function(e)
		{
			if (e.which == 13)
			{
				if ($('.register-form').validate().form())
				{
					$('.register-form').submit();
				}
				return false;
			}
		});

		jQuery('#register-btn').click(function()
		{
			jQuery('.login-form').hide();
			jQuery('.register-form').show();
		});

		jQuery('#register-back-btn').click(function()
		{
			jQuery('.login-form').show();
			jQuery('.register-form').hide();
		});
	}

	return	{
		// main function to initiate the module
		init : function()
		{

			handleLogin();
			handleForgetPassword();
			handleRegister();

		}

	};

}();
